﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GitDiff
{
    // [Cleaner]文件和目录删除处理
    class Cleaner
    {
        /// 删除指定目录以及该目录下所有文件
        /// 欲删除文件或者目录的路径
        public static void Clean(string dir)
        {
            CleanFiles(dir);//第一次删除文件
            CleanFiles(dir);//第二次删除目录
        }

        private static void CleanFiles(string dir)
        {
            if (!Directory.Exists(dir))
            {
                File.Delete(dir);
                return;
            }
            else
            {
                string[] dirs = Directory.GetDirectories(dir);
                string[] files = Directory.GetFiles(dir);
                if (0 != dirs.Length)
                {
                    foreach (string subDir in dirs)
                    {
                        if (null == Directory.GetFiles(subDir))
                        {
                            Directory.Delete(subDir);
                            return;
                        }
                        else CleanFiles(subDir);
                    }
                }
                if (0 != files.Length)
                {
                    foreach (string file in files)
                    {
                        File.Delete(file);
                    }
                }
                else
                    Directory.Delete(dir, true);
            }
        }
    }
}
